import accounting from 'accounting';
import { message } from 'antd';

import api from '../../api';

export const namespace = 'BondDeviationMonitoringM';

export default {
  namespace,
  state: {
    columns: [
      {
        title: '债券简称',
        dataIndex: 'bondAbbr',
        key: 'bondAbbr',
      },
      {
        title: '净价偏离度',
        dataIndex: 'netPriceDeviation',
        key: 'netPriceDeviation',
        render: (_) => (_ ? `${_}%` : '--'),
      },
      {
        title: '最低成交净价(元)',
        dataIndex: 'latestPrice',
        key: 'latestPrice',
        render: (_) => (_ || _ == 0 ? accounting.formatNumber(Number(_), 2) : '--'),
      },
      {
        title: '中债估值(元)',
        dataIndex: 'chineseDebtValue',
        key: 'chineseDebtValue',
        render: (_) => (_ || _ == 0 ? accounting.formatNumber(Number(_), 2) : '--'),
      },
      {
        title: '发行主体',
        dataIndex: 'issuer',
        key: 'issuer',
      },
      {
        title: '持有同一发行主体的资产',
        dataIndex: 'holdSameIssuerAsset',
        key: 'holdSameIssuerAsset',
        render: (_) => {
          if (_) {
            // 若为理财产品直投，即无所属资产管理计划/委外，则展示“--”
            // if (_==='若为理财产品直投') {
            //   return '--'
            // }
            if (typeof _ !== 'string') {
              return _.map((v) => <div>{v}</div>);
            }
            return _;
          }
          return '--';
        },
      },
      {
        title: '持有同一发行主体的产品',
        dataIndex: 'holdSameIssuerProduct',
        key: 'holdSameIssuerProduct',
        render: (_) => {
          if (_) {
            if (typeof _ !== 'string') {
              return _.map((v) => <div>{v}</div>);
            }
            return _;
          }
          return '--';
        },
      },
      {
        title: '是否同一债券',
        dataIndex: 'isSameBond',
        key: 'isSameBond',
        render: (_) => (_ === 'true' ? '是' : '否'),
      },
    ],
  },
  effects: {
    // 获取前一交易日
    *getTradingDate({ payload, callback }, { call }) {
      const res = yield call(api.getTradingDate, payload);
      if (res && res.message == 'success') {
        callback(res.data);
      } else {
        message.error(res?.message);
      }
    },
    // 查询日终偏离监控
    *queryDayMonitor({ payload, callback }, { call }) {
      try {
        const res = yield call(api.bondBaseInfo.queryBondDeviationMonitoring, payload);

        if (res.code === 0 || res.success) {
          callback(res);
        } else {
          message.error(res.msg || '查询失败!');
        }
      } catch (e) {
        console.log(e);
      }
    },
  },

  reducers: {
    setState(state, { payload }) {
      return {
        ...state,
        ...payload,
      };
    },
  },
};
